package com.cskaoyan.javase.network._2tcp._0introduction;

/**
 * TCP协议实现网络编程,必须建立在连接上
 * 分为服务端和客户端,服务端必须先启动,客户端启动后,会连接服务端进行通信,进行数据交互
 * ServerSocket: 表示服务端的套接字
 * // 创建绑定到特定端口的服务套接字。
 * ServerSocket(int port)
 * 表示服务端会一直监听这个端口号,客户端就是通过这个端口号来连接服务端
 * 常用方法:
 * // 侦听并接受到此套接字的连接。
 * Socket accept()
 * 该方法是一个阻塞方法,会一直等待客户端来连接服务端,连接上以后才能继续执行服务端代码
 * 客户端连接上服务端后,会返回客户端的Socket对象
 * 然后通过客户端的Socket对象获取输入输出流,这样服务端也能够进行数据处理了
 * 这里客户端的Socket对象和客户端自身用的Socket对象是同一个对象
 * 通过这个客户端的Socket对象,就实现了服务端和客户端的数据通信
 *
 * Socket: 表示客户端的套接字
 * // 创建一个流套接字并将其连接到指定主机上的指定端口号。
 * Socket(String host,int port)
 * host是IP地址,port是服务端监听的端口号
 *
 * 常用成员方法:
 * InputStream	getInputStream()	获取此Socket对象的输入流
 * OutputStream	getOutputStream()  获取此Socket对象的输出流
 *
 * 对于客户端和服务端使用的同一个客户端的Socket对象而言
 * 它是有输出流,有输入流的
 * 那么这个对象在不同的场景中,输入流和输入流肯定是不同的:
 * 在客户端自身当中
 *         1.Socket对象获取的输入流,是用来读数据(读服务端传过来的数据)
 *         2.Socket对象获取的输出流,是向服务端写数据(固定往服务端写)
 * 在服务端当中:
 *         1.Socket对象获取的输入流,是用来读数据(读客户端传过来的数据)
 *         2.Socket对象获取的输出流,是向客户端写数据(固定往客户端写)
 *
 * 怎么理解这个方法?
 * 在哪里进程中,就把这个进程看成内存,另一个通信的进程看成外存
 *
 * @since 15:02
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
}
